Os exercícios valem 30% da nota final.
Data Entrega: 18/09/2016
Formato da Entrega: .ipynb - Clique em File -> Download as -> IPython Notebook (.ipynb)
Enviar por email até a data de entrega, onde o assunto do email deve ser: Exercícios PosMBA Turma2 - SEU NOME
O cálculo da nota final é dado por: NF = (lista * 0.3) + (prova * 0.7)
In [1]:
def soma_tres_num(x,y,z=10):
return x+y+z
Teste para as seguintes situações:
In [2]:
print(soma_tres_num(0, 10))
In [3]:
print(soma_tres_num(1,2,3))
In [4]:
print(soma_tres_num(10, 10, 0))
In [ ]:
Teste as seguintes situações:
In [ ]:
print(qtde_caracteres(1234))
print(qtde_caracteres(', -'))
print(qtde_caracteres('python'))
print(qtde_caracteres('fia e big data'))
(1.5 ponto) Carregue o arquivo chamado funcionarios.txt. Esse arquivo contém nome e o salário anual de cada funcionário.
alexandre,42000
rose,50000
anderson,30000
antonio,60000
maria,120000
carlos,86000
cesar,48000
Faça os seguintes exercícios:
a) Crie uma função chamda carregar_dados_dic
que deve receber um parâmetro(no caso o arquivo funcionarios.txt) e retorne um dicionário, onde a chave será o nome e o valor será o salário anual.
In [ ]:
def carregar_dados_dic(arquivo):
# seu código aqui
In [ ]:
salarios = carregar_dados_dic('funcionarios.txt')
In [ ]:
print(salarios)
b) Crie uma função chamada calcular_salario_mensal
que irá calcular quanto o funcionário ganha por mês. Verifique o tipo do campo do valor do dicionário. Utilize a função float()
para converter o valor.
In [ ]:
def calcular_salario_mensal(salario_anual):
# seu código aqui
c) Por fim, imprima para cada funcionário o nome, salário anual e mensal no seguinte formato:
Rose --- R$ 50000 --- R$ 4166.66
Dica: Lembre-se do .format para formatar uma string. Utilize a função round para arredondar para 2 casas decimais.
>>> round(7166.67555, 2)
7166.67
In [ ]:
(1 ponto) Crie um programa que deve ler as informações do usuário (nome, idade e salário) através da função input
. É necessário validar as informações com os seguintes critérios:
Caso as informações não estejam nos critérios definidos anteriormente, será necessário solicitar ao usuário para digitar novamente. Por fim o programa deverá imprimir o seguinte texto:
NOME tem YY anos, recebe R$ SSS e seu nome tem CC caracteres.
Onde,
Lembre-se de formatar o salário para duas casas decimais.
In [ ]:
In [ ]:
In [ ]:
In [ ]:
(1.5 ponto) Crie uma função que deverá receber dois parâmetros, sendo um o arquivo e o outro a quantidade de palavras que aparecem com mais frequência. O retorno deverá ser uma lista, sendo que cada elemento dessa lista, deve ser uma tupla (chave-valor), sendo chave o nome da palavra e o valor a quantidade de vezes que ela apareceu no texto.
Por exemplo,
palavras_frequentes('texto1.txt', 10) - pesquisa no arquivo texto1.txt as 10 palavras mais frequentes.
palavras_frequentes('texto2.txt', 5) - pesquisa no arquivo texto2.txt as 5 palavras mais frequentes.
Lembre-se de tratar possíveis erros!
Exemplo de uso e saida:
>>> palavras10mais = palavras_frequentes('texto1.txt', 10)
>>> print(palavras10mais)
[('programas', 662), ('codigos', 661), ('dinheiro', 661), ('fia', 586), ('python', 491), ('data', 434), ('big', 434), ('velocidade', 133), ('Moneyball', 113), ('dados', 95)]
Dica: Verifique o funcionamento da função sorted para ordernar um dicionário com base no valor.
In [ ]:
def palavras_frequentes(arquivo, palavras_freq):
# seu código aqui
Faça o teste para as seguintes situações:
In [ ]:
palavras_frequentes('texto1.txt', 10)
In [ ]:
palavras_frequentes('texto2.txt', 10)
In [ ]:
palavras_frequentes('texto1.txt', 5)
In [ ]:
palavras_frequentes('texto2.txt', 5)
In [ ]:
palavras_frequentes('texto1.txt', 30)
(2 pontos) Utilizando o exemplo dado em aula sobre a Streaming API (Desafio 3 da Aula 5), recupere os tweets durante 10 minutos com os seguintes parâmetros:
fluxo.filter(track=['Big Data', 'Hadoop', 'Spark', 'Python', 'Data Science'], languages=['en', 'pt'])
Salve os tweets em um arquivo chamado tweets_10min.json
.
Importe os módulos necessários
In [ ]:
Crie as chaves de acesso
In [ ]:
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
Realize a autorização e defina a token de acesso
In [ ]:
Crie a classe DadosPublicosTwitter
herdando da classe tweepy.StreamListener para rodar durante 10 minutos e salvar os tweets no arquivo.
In [ ]:
class DadosPublicosTwitter(tweepy.StreamListener):
# seu código aqui
Crie a instância da classe, o fluxo e realize a filtragem com os parâmetros definidos no enunciado.
In [ ]:
(3 pontos) Com os dados salvos no tweets_10min.json, crie um DataFrame pandas com as seguintes colunas:
text
- Texto do Tweetcreated_at
- Data da criação do Tweetcoordinates
- Coordenadasretweet_count
- Quantidade de vezes que o tweet foi "retweetado".favorite_count
- Quantidade de vezes que o tweet foi "favoritado".
screen_name
- Nome na tela (exemplo: @prof_dinomagri)
location
- Localizaçãolang - Idioma
followers_count
- Quantidade de seguidoresgeo_enabled
- Se tem a geolocalização habilitadestatuses_count
- Quantidade de tweets postados.
lat
- Recuperada através da função desenvolvida em sala
long
- Recuperada através da função desenvolvida em salahashtags
- Recuperada através da função desenvolvida em salaLembre-se de utilizar as funções desenvolvidas em sala de aula para recuperar a latitude, longitude e hastags.
No final salve o arquivo no formato CSV, utilizando o separador ponto e virgula (;) e com a codificação 'utf-8'.
Importe os módulos necessários
In [ ]:
Utilize o comando with para abrir o arquivo 'tweets_10min.json' e salvar em uma lista
In [ ]:
Crie o DataFrame com os dados e imprima apenas os 3 primeiros tweets (linhas)
In [ ]:
Crie uma lista, onde cada elemento será o nome da coluna
In [ ]:
colunas = ['text', 'created_at', 'coordinates', 'retweet_count',
'favorite_count', 'screen_name', 'location', 'lang',
'followers_count', 'geo_enabled', 'statuses_count',
'lat', 'long', 'hashtags']
Crie um DataFrame auxiliar passando as colunas por parâmetro
In [ ]:
Crie a função de pegar_lat_long(local)
In [ ]:
from geopy.geocoders import Nominatim
def pegar_lat_long(local):
# seu código aqui
Crie a função para salvar_hashtags(texto)
In [ ]:
def salvar_hashtags(texto):
# seu código aqui
Certifique-se que o DataFrame auxiliar tem as 14 colunas necessárias
In [ ]:
len(df_aux.columns)
Por fim crie o laço que irá iterar em cada elemento do DataFrame original e salvar apenas o que queremos no DataFrame auxiliar.
Lembre-se de como queremos a latitude e longitude a localização tem que ser diferente de None
.
In [ ]:
Imprima o tamanho da DataFrame original e do auxiliar
In [ ]:
In [ ]:
2) Qual a porcentagem de tweets que tinham habilitado o geo_enabled?
In [ ]:
In [ ]: